package com.campus.counseling.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.campus.counseling.entity.TestDimension;
import com.campus.counseling.entity.TestQuestion;
import com.campus.counseling.model.dto.TestDimensionDTO;
import com.campus.counseling.model.query.TestDimensionQuery;
import com.campus.counseling.model.vo.TestDimensionVO;

import java.util.List;
import java.util.Map;

public interface TestDimensionService extends IService<TestDimension> {

    /**
     * 根据测试ID获取维度列表
     * @param testId 测试ID
     * @return 维度列表
     */
    List<TestDimension> getDimensionsByTestId(Long testId);

    /**
     * 根据维度键获取维度
     * @param testId 测试ID
     * @param dimensionKey 维度键
     * @return 维度
     */
    TestDimension getDimensionByKey(Long testId, String dimensionKey);

    /**
     * 批量创建维度
     * @param dimensions 维度列表
     * @return 是否成功
     */
    boolean batchCreateDimensions(List<TestDimension> dimensions);

    /**
     * 更新维度
     * @param dimension 维度
     * @return 是否成功
     */
    boolean updateDimension(TestDimension dimension);

    /**
     * 删除维度
     * @param testId 测试ID
     * @param dimensionKey 维度键
     * @return 是否成功
     */
    boolean deleteDimension(Long testId, String dimensionKey);

    /**
     * 获取维度问题数量
     * @param testId 测试ID
     * @return 维度问题数量
     */
    Map<String, Integer> getDimensionQuestionCount(Long testId);

    /**
     * 根据维度获取问题列表
     * @param testId 测试ID
     * @param dimension 维度
     * @return 问题列表
     */
    List<TestQuestion> getQuestionsByDimension(Long testId, String dimension);

    Page<TestDimensionVO> list(TestDimensionQuery query);
    
    TestDimensionVO getDimension(Long id);
    
    void createDimension(TestDimensionDTO dto);
    
    void updateDimension(Long id, TestDimensionDTO dto);
    
    void deleteDimension(Long id);
} 